<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- Copyright © 1987-2023 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation.  A copy of
the license is included in the
section entitled "GNU Free Documentation License".

This manual contains no Invariant Sections.  The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).

(a) The FSF's Front-Cover Text is:

A GNU Manual

(b) The FSF's Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<title>Top (The C Preprocessor)</title>

<meta name="description" content="Top (The C Preprocessor)">
<meta name="keywords" content="Top (The C Preprocessor)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="#Top" rel="start" title="Top">
<link href="Index-of-Directives.html" rel="index" title="Index of Directives">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Overview.html" rel="next" title="Overview">
<style type="text/css">
<!--
ul.toc-numbered-mark {list-style: none}
-->
</style>


</head>

<body lang="en">















<div class="element-contents" id="SEC_Contents">
<h2 class="contents-heading">Table of Contents</h2>

<div class="contents">

<ul class="toc-numbered-mark">
  <li><a id="toc-Overview-1" href="Overview.html">1 Overview</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-Character-sets-1" href="Character-sets.html">1.1 Character sets</a></li>
    <li><a id="toc-Initial-processing-1" href="Initial-processing.html">1.2 Initial processing</a></li>
    <li><a id="toc-Tokenization-1" href="Tokenization.html">1.3 Tokenization</a></li>
    <li><a id="toc-The-preprocessing-language-1" href="The-preprocessing-language.html">1.4 The preprocessing language</a></li>
  </ul></li>
  <li><a id="toc-Header-Files-1" href="Header-Files.html">2 Header Files</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-Include-Syntax-1" href="Include-Syntax.html">2.1 Include Syntax</a></li>
    <li><a id="toc-Include-Operation-1" href="Include-Operation.html">2.2 Include Operation</a></li>
    <li><a id="toc-Search-Path-1" href="Search-Path.html">2.3 Search Path</a></li>
    <li><a id="toc-Once_002dOnly-Headers-1" href="Once_002dOnly-Headers.html">2.4 Once-Only Headers</a></li>
    <li><a id="toc-Alternatives-to-Wrapper-_0023ifndef-1" href="Alternatives-to-Wrapper-_0023ifndef.html">2.5 Alternatives to Wrapper #ifndef</a></li>
    <li><a id="toc-Computed-Includes-1" href="Computed-Includes.html">2.6 Computed Includes</a></li>
    <li><a id="toc-Wrapper-Headers-1" href="Wrapper-Headers.html">2.7 Wrapper Headers</a></li>
    <li><a id="toc-System-Headers-1" href="System-Headers.html">2.8 System Headers</a></li>
  </ul></li>
  <li><a id="toc-Macros-1" href="Macros.html">3 Macros</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-Object_002dlike-Macros-1" href="Object_002dlike-Macros.html">3.1 Object-like Macros</a></li>
    <li><a id="toc-Function_002dlike-Macros-1" href="Function_002dlike-Macros.html">3.2 Function-like Macros</a></li>
    <li><a id="toc-Macro-Arguments-1" href="Macro-Arguments.html">3.3 Macro Arguments</a></li>
    <li><a id="toc-Stringizing-1" href="Stringizing.html">3.4 Stringizing</a></li>
    <li><a id="toc-Concatenation-1" href="Concatenation.html">3.5 Concatenation</a></li>
    <li><a id="toc-Variadic-Macros-1" href="Variadic-Macros.html">3.6 Variadic Macros</a></li>
    <li><a id="toc-Predefined-Macros-1" href="Predefined-Macros.html">3.7 Predefined Macros</a>
    <ul class="toc-numbered-mark">
      <li><a id="toc-Standard-Predefined-Macros-1" href="Standard-Predefined-Macros.html">3.7.1 Standard Predefined Macros</a></li>
      <li><a id="toc-Common-Predefined-Macros-1" href="Common-Predefined-Macros.html">3.7.2 Common Predefined Macros</a></li>
      <li><a id="toc-System_002dspecific-Predefined-Macros-1" href="System_002dspecific-Predefined-Macros.html">3.7.3 System-specific Predefined Macros</a></li>
      <li><a id="toc-C_002b_002b-Named-Operators-1" href="C_002b_002b-Named-Operators.html">3.7.4 C++ Named Operators</a></li>
    </ul></li>
    <li><a id="toc-Undefining-and-Redefining-Macros-1" href="Undefining-and-Redefining-Macros.html">3.8 Undefining and Redefining Macros</a></li>
    <li><a id="toc-Directives-Within-Macro-Arguments-1" href="Directives-Within-Macro-Arguments.html">3.9 Directives Within Macro Arguments</a></li>
    <li><a id="toc-Macro-Pitfalls-1" href="Macro-Pitfalls.html">3.10 Macro Pitfalls</a>
    <ul class="toc-numbered-mark">
      <li><a id="toc-Misnesting-1" href="Misnesting.html">3.10.1 Misnesting</a></li>
      <li><a id="toc-Operator-Precedence-Problems-1" href="Operator-Precedence-Problems.html">3.10.2 Operator Precedence Problems</a></li>
      <li><a id="toc-Swallowing-the-Semicolon-1" href="Swallowing-the-Semicolon.html">3.10.3 Swallowing the Semicolon</a></li>
      <li><a id="toc-Duplication-of-Side-Effects-1" href="Duplication-of-Side-Effects.html">3.10.4 Duplication of Side Effects</a></li>
      <li><a id="toc-Self_002dReferential-Macros-1" href="Self_002dReferential-Macros.html">3.10.5 Self-Referential Macros</a></li>
      <li><a id="toc-Argument-Prescan-1" href="Argument-Prescan.html">3.10.6 Argument Prescan</a></li>
      <li><a id="toc-Newlines-in-Arguments-1" href="Newlines-in-Arguments.html">3.10.7 Newlines in Arguments</a></li>
    </ul></li>
  </ul></li>
  <li><a id="toc-Conditionals-1" href="Conditionals.html">4 Conditionals</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-Conditional-Uses-1" href="Conditional-Uses.html">4.1 Conditional Uses</a></li>
    <li><a id="toc-Conditional-Syntax-1" href="Conditional-Syntax.html">4.2 Conditional Syntax</a>
    <ul class="toc-numbered-mark">
      <li><a id="toc-Ifdef-1" href="Ifdef.html">4.2.1 Ifdef</a></li>
      <li><a id="toc-If-1" href="If.html">4.2.2 If</a></li>
      <li><a id="toc-Defined-1" href="Defined.html">4.2.3 Defined</a></li>
      <li><a id="toc-Else-1" href="Else.html">4.2.4 Else</a></li>
      <li><a id="toc-Elif-1" href="Elif.html">4.2.5 Elif</a></li>
      <li><a id="toc-_005f_005fhas_005fattribute-1" href="_005f_005fhas_005fattribute.html">4.2.6 <code class="code">__has_attribute</code></a></li>
      <li><a id="toc-_005f_005fhas_005fcpp_005fattribute-1" href="_005f_005fhas_005fcpp_005fattribute.html">4.2.7 <code class="code">__has_cpp_attribute</code></a></li>
      <li><a id="toc-_005f_005fhas_005fc_005fattribute-1" href="_005f_005fhas_005fc_005fattribute.html">4.2.8 <code class="code">__has_c_attribute</code></a></li>
      <li><a id="toc-_005f_005fhas_005fbuiltin-1" href="_005f_005fhas_005fbuiltin.html">4.2.9 <code class="code">__has_builtin</code></a></li>
      <li><a id="toc-_005f_005fhas_005finclude-1" href="_005f_005fhas_005finclude.html">4.2.10 <code class="code">__has_include</code></a></li>
    </ul></li>
    <li><a id="toc-Deleted-Code-1" href="Deleted-Code.html">4.3 Deleted Code</a></li>
  </ul></li>
  <li><a id="toc-Diagnostics-1" href="Diagnostics.html">5 Diagnostics</a></li>
  <li><a id="toc-Line-Control-1" href="Line-Control.html">6 Line Control</a></li>
  <li><a id="toc-Pragmas-1" href="Pragmas.html">7 Pragmas</a></li>
  <li><a id="toc-Other-Directives-1" href="Other-Directives.html">8 Other Directives</a></li>
  <li><a id="toc-Preprocessor-Output-1" href="Preprocessor-Output.html">9 Preprocessor Output</a></li>
  <li><a id="toc-Traditional-Mode-1" href="Traditional-Mode.html">10 Traditional Mode</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-Traditional-lexical-analysis-1" href="Traditional-lexical-analysis.html">10.1 Traditional lexical analysis</a></li>
    <li><a id="toc-Traditional-macros-1" href="Traditional-macros.html">10.2 Traditional macros</a></li>
    <li><a id="toc-Traditional-miscellany-1" href="Traditional-miscellany.html">10.3 Traditional miscellany</a></li>
    <li><a id="toc-Traditional-warnings-1" href="Traditional-warnings.html">10.4 Traditional warnings</a></li>
  </ul></li>
  <li><a id="toc-Implementation-Details-1" href="Implementation-Details.html">11 Implementation Details</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-Implementation_002ddefined-behavior-1" href="Implementation_002ddefined-behavior.html">11.1 Implementation-defined behavior</a></li>
    <li><a id="toc-Implementation-limits-1" href="Implementation-limits.html">11.2 Implementation limits</a></li>
    <li><a id="toc-Obsolete-Features-1" href="Obsolete-Features.html">11.3 Obsolete Features</a>
    <ul class="toc-numbered-mark">
      <li><a id="toc-Assertions" href="Obsolete-Features.html#Assertions">11.3.1 Assertions</a></li>
    </ul></li>
  </ul></li>
  <li><a id="toc-Invocation-1" href="Invocation.html">12 Invocation</a></li>
  <li><a id="toc-Environment-Variables-1" href="Environment-Variables.html">13 Environment Variables</a></li>
  <li><a id="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html">GNU Free Documentation License</a>
  <ul class="toc-numbered-mark">
    <li><a id="toc-ADDENDUM_003a-How-to-use-this-License-for-your-documents" href="GNU-Free-Documentation-License.html#ADDENDUM_003a-How-to-use-this-License-for-your-documents">ADDENDUM: How to use this License for your documents</a></li>
  </ul></li>
  <li><a id="toc-Index-of-Directives-1" href="Index-of-Directives.html" rel="index">Index of Directives</a></li>
  <li><a id="toc-Option-Index-1" href="Option-Index.html" rel="index">Option Index</a></li>
  <li><a id="toc-Concept-Index-1" href="Concept-Index.html" rel="index">Concept Index</a></li>
</ul>
</div>
</div>

<div class="top-level-extent" id="Top">
<div class="nav-panel">
<p>
Next: <a href="Overview.html" accesskey="n" rel="next">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a class="top" id="SEC_Top"></a><p>The C preprocessor implements the macro language used to transform C,
C++, and Objective-C programs before they are compiled.  It can also be
useful on its own.
</p>

<p>Copyright &copy; 1987-2023 Free Software Foundation, Inc.
</p>
<p>Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation.  A copy of
the license is included in the
section entitled &ldquo;GNU Free Documentation License&rdquo;.
</p>
<p>This manual contains no Invariant Sections.  The Front-Cover Texts are
(a) (see below), and the Back-Cover Texts are (b) (see below).
</p>
<p>(a) The FSF&rsquo;s Front-Cover Text is:
</p>
<p>A GNU Manual
</p>
<p>(b) The FSF&rsquo;s Back-Cover Text is:
</p>
<p>You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development.
</p>
<ul class="mini-toc">
<li><a href="Overview.html" accesskey="1">Overview</a></li>
<li><a href="Header-Files.html" accesskey="2">Header Files</a></li>
<li><a href="Macros.html" accesskey="3">Macros</a></li>
<li><a href="Conditionals.html" accesskey="4">Conditionals</a></li>
<li><a href="Diagnostics.html" accesskey="5">Diagnostics</a></li>
<li><a href="Line-Control.html" accesskey="6">Line Control</a></li>
<li><a href="Pragmas.html" accesskey="7">Pragmas</a></li>
<li><a href="Other-Directives.html" accesskey="8">Other Directives</a></li>
<li><a href="Preprocessor-Output.html" accesskey="9">Preprocessor Output</a></li>
<li><a href="Traditional-Mode.html">Traditional Mode</a></li>
<li><a href="Implementation-Details.html">Implementation Details</a></li>
<li><a href="Invocation.html">Invocation</a></li>
<li><a href="Environment-Variables.html">Environment Variables</a></li>
<li><a href="GNU-Free-Documentation-License.html">GNU Free Documentation License</a></li>
<li><a href="Index-of-Directives.html">Index of Directives</a></li>
<li><a href="Option-Index.html">Option Index</a></li>
<li><a href="Concept-Index.html">Concept Index</a></li>
</ul>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Overview.html" accesskey="n" rel="next">Overview</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index-of-Directives.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
